package com.itcam.phaseii.bignum;

import java.math.BigDecimal;

public class BigDecimal_ {
    public static void main(String[] args) {
        // 当我们需要保存一个精度很高的数时，double不够用
        // 可以用BigDecimal的类来搞定

        // 用法和bigInteger类大同小异

        double d = 1999.11111111111999999999999977788d;
        // System.out.println(d);
        BigDecimal bigDecimal1 = new BigDecimal("1999.11");
        BigDecimal bigDecimal2 = new BigDecimal("3");
        // System.out.println(bigDecimal1);

        // 1. 如果对BigDecimal进行运算，比如加减乘除，需要使用对应的方法
        // 2. 创建一个需要操作的BigDecimal然后调用相应的方法即可
        System.out.println(bigDecimal1.add(bigDecimal2));
        System.out.println(bigDecimal1.subtract(bigDecimal2));
        System.out.println(bigDecimal1.multiply(bigDecimal2));
        //System.out.println(bigDecimal1.divide(bigDecimal2));//可能抛出异常ArithmeticException

        // 在调用divide方法时，指定精度即可. BigDecimal.ROUND_CEILING
        // 如果有无限循环小数，就会保留分子的精度
        System.out.println(bigDecimal1.divide(bigDecimal2, BigDecimal.ROUND_CEILING));

        // 关于BigDecimal的round模式的参数的含义参考：https://blog.csdn.net/hanlj123/article/details/80581576
    }
}
